package bean.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import Entities.ReceptorAutorizado;
import Management.ManagementSucursal;

public class ReceptorAutorizadoDAO {

	private static ReceptorAutorizadoDAO instancia;
	private static SessionFactory sf;
	
	public static ReceptorAutorizadoDAO getInstancia(){
		if(instancia == null){
			sf = (HibernateDAO.getInstancia().getSession().getSessionFactory());
			instancia = new ReceptorAutorizadoDAO();
		} 
		return instancia;
	}
	
	@SuppressWarnings("unchecked")
	public List<ReceptorAutorizado> obtenerReceptoresAutorizados() {
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		List<ReceptorAutorizado> lista = s.createQuery("from ReceptorAutorizado").list();		
		t.commit();
		return lista;
	}

	public ReceptorAutorizado getReceptorAutorizado(int idRec) {
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		ReceptorAutorizado r = (ReceptorAutorizado) s.createQuery(" from ReceptorAutorizado where id = :identificador").setParameter("identificador", idRec).uniqueResult();;		
		t.commit();
		return r;
	}

	public void bajaReceptorAutorizado(int id) {
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		Query buscarReceptorAutorizado =  s.createQuery("SELECT r FROM ReceptorAutorizado r WHERE r.Id = :id").setParameter("id",id);
		ReceptorAutorizado receptor = (ReceptorAutorizado) buscarReceptorAutorizado.uniqueResult();
        //Borro el objeto de persistencia
        s.delete(receptor);
        t.commit();
		
	}

	public void altaReceptorAutorizado(ReceptorAutorizado r) {
		
             ReceptorAutorizado Receptor = new ReceptorAutorizado();
             Receptor.setNombre(r.getNombre());
             Receptor.setApellido(r.getApellido());
             Receptor.setDocumento(r.getDocumento());
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		s.save(Receptor);
		t.commit();

	}

	public static void actualizarReceptorAutorizado(String nombre,String apellido,String documento) {
		
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		Query buscarReceptorAutorizado =  s.createQuery("SELECT e FROM ReceptorAutorizado e WHERE e.documento = doc").setParameter("doc",documento);
		ReceptorAutorizado rec = (ReceptorAutorizado) buscarReceptorAutorizado.uniqueResult();
        
		rec.setNombre(nombre);
		rec.setApellido(apellido);
		rec.setDocumento(documento);
        s.update(rec);
        t.commit();
		
	}
	
	public static void setSf(SessionFactory sf) {
		ReceptorAutorizadoDAO.sf = sf;
	}

	public static SessionFactory getSf() {
		return sf;
	}

	
		

}


